home *** CD-ROM | disk | FTP | other *** search
/ Level 2005 Christmas (DVD) / Level_2005-XMAS_134_DVD_Knightshift.iso / Demos / Ski Racing 2006 / setup1.cab / DataCommonShadersDX8Normal_Specular_Basic.vsh < prev    next >
Encoding:
Text File  |  2005-11-03  |  2.7 KB  |  111 lines

  1. vs.1.1
  2.  
  3. ;dx9 stuff
  4. ;********
  5. ;dcl_position v0
  6. ;dcl_blendweight v1
  7. ;dcl_blendindices v2
  8. ;dcl_normal v3
  9. ;dcl_binormal v4
  10. ;dcl_tangent v5
  11. ;dcl_texcoord0 v7
  12.  
  13. ;Constant map from the NSF.  
  14. ;
  15. ;CM_Defined      WorldViewProjTranspose  0    0
  16. ;CM_Constant     const_1_1_1_255         4    1    1.0,1.0,1.0,765.01
  17. ;CM_Global       DirLight1Direction      5    1   
  18. ;CM_Global       DaCameraPosition        6    1
  19. ;CM_Constant     Half                    7    1   0.5,0.5,0.5,0.5   
  20. ;CM_Defined      InvWorldTranspose       8      0
  21.  
  22.  
  23. m4x4    oPos, v0, c0
  24.  
  25. ; Find light vector in object space
  26. mov r5, c5                   ;Get the light direction in world space.
  27. m3x3 r4, r5, c8              ;Transform to object space with inverse world mat
  28.  
  29. ; Normalize light vector.
  30. dp3 r3.x, r4, r4
  31. rsq r2.x, r3.x
  32. mul r0, r4.xyz, r2.xxx
  33.  
  34. dp3 r7.x, r0, v5             ;Tangent
  35. dp3 r7.y, r0, v4             ;Binormal
  36. dp3 r7.z, r0, v3             ;Normal
  37. mad oD0.xyz, r7.xyz, c7, c7    ;Scale and bias since texcoord in the pixel shader
  38.                              ;expects a range of 0 to 1.
  39.  
  40.  
  41. ;Specular calculation
  42. ;mov r1, v0
  43.  
  44. m4x4 r1, v0, c16 ; to world
  45.  
  46. add r5, -r1, c6
  47. ;mov r5, c6
  48.  
  49. dp3 r3.x, r5.xyz, r5.xyz
  50. rsq r3.xyz, r3.x
  51. mul r5.xyz, r5.xyz, r3.xxx
  52.  
  53. add  r2.xyz, r5.xyz, c5         ;L + V
  54.  
  55. dp3  r4.x, r2.xyz, r2.xyz      ;normalize inv view vec
  56. rsq  r4.xyz, r4.x
  57. mul  r2.xyz, r2.xyz, r4.xyz
  58.  
  59. ;mov r4, r5
  60. m3x3 r4, r2, c8              ;Transform to object space with inverse world mat
  61.  
  62. ; Normalize light vector.
  63. dp3 r3.x, r4.xyz, r4.xyz
  64. rsq r3.xyz, r3.x
  65. mul r4.xyz, r4.xyz, r3.xxx
  66.  
  67. dp3 r7.x, r4, v5             ;Tangent
  68. dp3 r7.y, r4, v4             ;Binormal
  69. dp3 r7.z, r4, v3             ;Normal
  70. mad oD1.xyz, r7.xyz, c7, c7    ;Scale and bias since texcoord in the pixel shader
  71.  
  72. ;mov r2, -c6        ;find inv view vector
  73.  
  74. ;m3x3 r4, r2, c8              ;Transform to object space with inverse world mat
  75.  
  76. ;dp3 r3.x, r2, r2
  77. ;rsq r2.x, r3.x
  78. ;mul r3, r2.xyz, r2.xxx
  79.  
  80.  
  81. ;add  r2.xyz, r3.xyz, r0         ;L + V
  82.  
  83. ;dp3  r4.x, r2.xyz, r2.xyz      ;normalize inv view vec
  84. ;rsq  r4.xyz, r4.x
  85. ;mul  r2.xyz, r2.xyz, r4.xyz
  86.  
  87.  
  88. ;r2 now holds the view vector.  We need to get the half vector.
  89. ;add  r3.xyz, r2.xyz, c5         ;L + V
  90. ;m3x3 r3, r3, c8
  91. ;dp3 r8.x, v5, r3              ;Tangent
  92. ;dp3 r8.y, v4, r3            ;Binormal
  93. ;dp3 r8.z, v3, r3           ;Normal
  94.  
  95. ;mad oD1.xyz, r7.xyz, c7, c7
  96.  
  97.  
  98.  
  99.  
  100. ;Ambient Lighting - rest will be done in ps
  101. ;mov r1, c10                  ;Move in the ambient material so we can multiply
  102. ;mul oD0, r1, c9              ;Modulate the ambient light by material
  103.  
  104. ; Texture coordinates for the base map and normal map and gloss.
  105. mov  oT0.xy, v7.xy
  106. mov  oT1.xy, v7.xy
  107. mov  oT2.xy, v7.xy
  108.  
  109.  
  110.  
  111.